home *** CD-ROM | disk | FTP | other *** search
/ SGI Freeware 2002 November / SGI Freeware 2002 November - Disc 2.iso / dist / fw_glimpse.idb / usr / freeware / src / glimpse-3.0 / libtemplate / template / netfind2soif.pl.z / netfind2soif.pl
Perl Script  |  1997-09-09  |  3KB  |  119 lines

  1. : # *-*-perl-*-*
  2.     eval 'exec perl -S $0 "$@"'
  3.     if $running_under_some_shell;  
  4. #
  5. #  netfind2soif.pl - Converts the Netfind seed database into a SOIF stream.
  6. #             Groups the SOIF templates by second-level domains.
  7. #
  8. #  Darren Hardy, hardy@cs.colorado.edu, January 1995
  9. #
  10. #  $Id: netfind2soif.pl,v 1.7 1995/01/17 23:07:33 hardy Exp $
  11. #
  12. #  The netfind seed database has records that look like this:
  13. #
  14. #    %D domain-name
  15. #    %O organization-name
  16. #    %H hostnames
  17. #
  18. #  Generates SOIF that looks like this:
  19. #
  20. #    @DOMAIN { nop:domain-name
  21. #    Embed<x>-Domain{x}:    foo.domain-name
  22. #    Embed<x>-Organization{x}:    organization-name
  23. #    Embed<x>-Hosts{x}:    hosts
  24. #    Embed<y>-Domain{x}:    bar.domain-name
  25. #    Embed<y>-Organization{x}:    organization-name
  26. #    Embed<y>-Hosts{x}:    hosts
  27. #    }
  28. #  or
  29. #    @DOMAIN { nop:domain-name
  30. #    Domain{x}:    domain-name
  31. #    Organization{x}:    organization-name
  32. #    Hosts{x}:    hosts
  33. #    }
  34. #
  35. $ENV{'HARVEST_HOME'} = "/usr/local/harvest" if (!defined($ENV{'HARVEST_HOME'}));
  36. unshift(@INC, "$ENV{'HARVEST_HOME'}/lib");      # use local files 
  37. $ENV{'TMPDIR'} = "/tmp" if (!defined($ENV{'TMPDIR'}));
  38.  
  39. require 'soif.pl';
  40.  
  41. $sld_file = "$ENV{'TMPDIR'}/nfdomains.$$";
  42. $slo_file = "$ENV{'TMPDIR'}/nforgs.$$";
  43. $slh_file = "$ENV{'TMPDIR'}/nfhosts.$$";
  44.  
  45.  
  46. &do_reset();
  47. while (<>) {
  48.     chop;
  49.     $d = $1, next if (/^%D\s*(.*)$/io);
  50.     $o = $1, next if (/^%O\s*(.*)$/io);
  51.     $h = $1, next if (/^%H\s*(.*)$/io);
  52.     if (defined($d) && defined($o) && defined($h)) {
  53.         if ($d =~ /^(\d+)\.(\d+)\.(\d+)$/o) {
  54.             $sld = "$1.$2";
  55.         } elsif ($d =~ /^([+\-\w]+\.[+\-\w]+)$/o) {
  56.             $sld = $1;
  57.         } elsif ($d =~ /^.*\.([+\-\w]+\.[+\-\w]+)$/o) {
  58.             $sld = $1;
  59.         } else {
  60.             next;
  61.         }
  62.         $sl_domain{$sld} .= "$d\n";
  63.         if ($o eq "") {
  64.             $sl_org{$sld} .= "unspecified\n";
  65.         } else {
  66.             $sl_org{$sld} .= "$o\n";
  67.         }
  68.         if ($h eq "") {
  69.             $sl_host{$sld} .= "unspecified\n";
  70.         } else {
  71.             $sl_host{$sld} .= "$h\n";
  72.         }
  73.         &do_reset();
  74.     }
  75. }
  76.  
  77. while (($key, $value) = each %sl_domain) {
  78.     @domains = split(/\n/, $sl_domain{$key});
  79.     @orgs = split(/\n/, $sl_org{$key});
  80.     @hosts = split(/\n/, $sl_host{$key});
  81.  
  82.     undef %record;
  83.     delete $sl_domain{$key};
  84.     delete $sl_org{$key};
  85.     delete $sl_host{$key};
  86.  
  87.     if ($#domains < 0 || $#orgs < 0 || $#hosts < 0) {
  88.         print STDERR "Empty Record!\n";
  89.         next;
  90.     }
  91.     $n = $#domains + 1;
  92.     if ($n == 1) {
  93.         $record{"Domain"} = $domains[0];
  94.         $record{"Organization"} = $orgs[0]
  95.             if ($orgs[0] ne "unspecified");
  96.         $record{"Hosts"} = $hosts[0]
  97.             if ($hosts[0] ne "unspecified");
  98.     } else {
  99.         for ($i = 1; $i <= $n; $i++) {
  100.             $record{"Embed<$i>-Domain"} = $domains[$i-1];
  101.             $record{"Embed<$i>-Organization"} = $orgs[$i-1] 
  102.                 if ($orgs[$i-1] ne "unspecified");
  103.             $record{"Embed<$i>-Hosts"} = $hosts[$i-1]
  104.                 if ($hosts[$i-1] ne "unspecified");
  105.         }
  106.     }
  107.     &soif'print("DOMAIN", "nop:$key", %record);
  108. }
  109.  
  110.  
  111. exit(0);
  112.  
  113. sub do_reset {
  114.     undef $d;
  115.     undef $o;
  116.     undef $h;
  117.     undef $sld;
  118. }
  119.